package com.mathpractise.controller;

/**
 * 统一API响应结果封装类
 * @param <T> 数据类型
 */
public class ApiResponse<T> {
    /**
     * 状态码，0表示成功，非0表示失败
     */
    private int code;
    
    /**
     * 错误消息，成功时为null
     */
    private String message;
    
    /**
     * 业务数据，失败时为null
     */
    private T data;
    
    /**
     * 成功响应构造函数
     * @param data 业务数据
     */
    public ApiResponse(T data) {
        this.code = 0;
        this.data = data;
    }
    
    /**
     * 失败响应构造函数
     * @param code 错误码
     * @param message 错误消息
     */
    public ApiResponse(int code, String message) {
        this.code = code;
        this.message = message;
    }
    
    // Getter和Setter方法
    public int getCode() {
        return code;
    }
    
    public void setCode(int code) {
        this.code = code;
    }
    
    public String getMessage() {
        return message;
    }
    
    public void setMessage(String message) {
        this.message = message;
    }
    
    public T getData() {
        return data;
    }
    
    public void setData(T data) {
        this.data = data;
    }
    
    /**
     * 创建成功响应
     * @param data 业务数据
     * @param <T> 数据类型
     * @return ApiResponse实例
     */
    public static <T> ApiResponse<T> success(T data) {
        return new ApiResponse<>(data);
    }
    
    /**
     * 创建失败响应
     * @param code 错误码
     * @param message 错误消息
     * @param <T> 数据类型
     * @return ApiResponse实例
     */
    public static <T> ApiResponse<T> error(int code, String message) {
        return new ApiResponse<>(code, message);
    }
}